package main;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class RapportEditeur {

	public static void main(String[] args) throws Exception {
		RapportEditeur editeur = new RapportEditeur();
		editeur.writeRapport();
	}
	
	public void writeRapport(){
		ItemsBuyer itemBuyer = new ItemsBuyer();
		List<Item> itemsListForRequest = new ArrayList<Item>();
		for (Item item : Item.values()){
			itemsListForRequest.add(item);
		}
		try {
	        itemBuyer.recupereValeursWs(itemsListForRequest);
        } catch (Exception e) {
	        e.printStackTrace();
        }
		for (Item item : itemsListForRequest){
			itemBuyer.initItem(item);
		}
		Collections.sort(itemBuyer.getItemsList(), new ItemComparator());
		List<Item> itemsToBuy = new ArrayList<Item>();
		int valeurAchat = 0;
		int valeurVente = 0;
		int margeMin = 99999;
		int margeMax = 0;
		int pourcentageMin = 99999;
		int pourcentageMax = 0;
		int i = 0;
		for (Item item : itemBuyer.getItemsList()){
			i++;
			if (i > itemBuyer.getNombreItemMax()){
				break;
			}
			itemsToBuy.add(item);
			valeurAchat += item.getBuy();
			valeurVente += item.getSell();
			if (item.getMarge() < margeMin){
				margeMin = item.getMarge();
			}
			if (item.getMarge() > margeMax){
				margeMax = item.getMarge();
			}
			if (item.getPourcentage() < pourcentageMin){
				pourcentageMin = item.getPourcentage();
			}
			if (item.getPourcentage() > pourcentageMax){
				pourcentageMax = item.getPourcentage();
			}
		}
		BigDecimal margeTotale = BigDecimal.valueOf(valeurVente * 0.85 - valeurAchat);
		BigDecimal margeMoyenne = margeTotale.divide(BigDecimal.valueOf(itemBuyer.getNombreItemMax()), BigDecimal.ROUND_HALF_EVEN);
		BigDecimal pourcentageMoyen = margeTotale.multiply(BigDecimal.valueOf(100)).divide(BigDecimal.valueOf(valeurAchat), BigDecimal.ROUND_HALF_EVEN);
		StringBuilder sb = new StringBuilder();
		sb.append("Items achetables : " + itemBuyer.getItemsList().size());
		sb.append("\r\nParamétrage actuel : " + itemBuyer.getNombreItemMax());
		sb.append("\r\nMarge : " + margeMin / 100 + "pa / " + margeMoyenne.intValue() / 100 + "pa / " + margeMax / 100 + "pa");
		sb.append("\r\nPourcentage : " + pourcentageMin / 100 + "% / " + pourcentageMoyen.intValue() + "% / " + pourcentageMax / 100 + "%");
		sb.append("\r\nValeur totale : " + valeurAchat / 10000 + "po / " + valeurVente / 10000 + "po");
		sb.append("\r\nMarge totale : " + margeTotale.intValue() / 10000 + "po");
		System.out.println(sb.toString());
		TxtWriter writer = new TxtWriter("C:/Trader/Rapport.txt");
		writer.write(sb.toString());
	}
	
}